-- Path of Building
--
-- Active Strength skill gems
-- Skill data (c) Grinding Gear Games
--
local skills, mod, flag, skill = ...

#skill Absolution
#flags spell minion duration area
	minionList = {
		"AbsolutionTemplarJudge",
		"AbsolutionTemplarJudgeVaal",
	},
	statMap = {
		["skill_physical_damage_%_to_convert_to_lightning"] = {
			mod("SkillPhysicalDamageConvertToLightning", "BASE", nil),
			mod("MinionModifier", "LIST", { mod = mod("SkillPhysicalDamageConvertToLightning", "BASE", nil, 0, 0) })
		},
	},
#baseMod skill("radius", 25)
#mods

#skill AbsolutionAltX
#flags spell minion duration area
	minionList = {
		"AbsolutionTemplarJudge",
		"AbsolutionTemplarJudgeVaal",
	},
	statMap = {
		["skill_physical_damage_%_to_convert_to_lightning"] = {
			mod("SkillPhysicalDamageConvertToLightning", "BASE", nil),
			mod("MinionModifier", "LIST", { mod = mod("SkillPhysicalDamageConvertToLightning", "BASE", nil, 0, 0) })
		},
	},
#baseMod skill("radius", 25)
#mods

#skill VaalAbsolution
#flags spell minion duration area
	statMap = {
		["vaal_upgrade_minion_damage_+%_final"] = {
		-- Stat is handled directly on minion
		},
		["vaal_upgrade_minion_damage_taken_+%_final"] = {
		-- Stat is handled directly on minion
		},
	},
#mods

#skill InfernalCryOnHitExplosion
#flags attack melee area
	statMap = {
		["triggered_by_infernal_cry"] = {
			-- Display only
		},
	},
#baseMod skill("showAverage", true)
#mods

#skill TotemMelee
#flags attack melee totem duration
	statMap = {
		["melee_ancestor_totem_grant_owner_attack_speed_+%_final"] = {
			mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }),
		},
	},
#baseMod skill("allowTotemBuff", true)
#baseMod skill("thisIsNotABuff", true)
#mods

#skill AncestralCry
#flags warcry area duration
	statMap = {
		["skill_empowers_next_x_melee_attacks"] = {
			mod("AncestralExertedAttacks", "BASE", nil),
		},
		["ancestral_cry_x_melee_range_per_5_monster_power"] = {
			mod("AncestralMeleeWeaponRangePer5MP", "BASE", nil),
		},
		["ancestral_cry_physical_damage_reduction_rating_per_5_MP"] = {
			mod("AncestralArmourPer5MP", "BASE", nil),
		},
		["ancestral_cry_max_physical_damage_reduction_rating"] = {
			mod("AncestralArmourMax", "BASE", nil),
		},
	},
#baseMod skill("radius", 60)
#mods

#skill AncestorTotemSlam
#flags attack melee totem area duration
	statMap = {
		["slam_ancestor_totem_grant_owner_melee_damage_+%_final"] = {
			mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Ancestral Warchief" }),
		},
	},
#baseMod skill("allowTotemBuff", true)
#baseMod skill("thisIsNotABuff", true)
#mods

#skill VaalAncestralWarchief
#flags attack melee totem area duration
	statMap = {
		["slam_ancestor_totem_grant_owner_melee_damage_+%_final"] = {
			mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Ancestral Warchief" }),
		},
	},
#baseMod skill("allowTotemBuff", true)
#baseMod skill("thisIsNotABuff", true)
#mods

#skill Anger
#flags spell aura area
	statMap = {
		["attack_minimum_added_fire_damage"] = {
			mod("FireMin", "BASE", nil, 0, KeywordFlag.Attack, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["attack_maximum_added_fire_damage"] = {
			mod("FireMax", "BASE", nil, 0, KeywordFlag.Attack, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["spell_minimum_added_fire_damage"] = {
			mod("FireMin", "BASE", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["spell_maximum_added_fire_damage"] = {
			mod("FireMax", "BASE", nil, 0, KeywordFlag.Spell, { type = "GlobalEffect", effectType = "Aura" }),
		},
	},
#baseMod skill("radius", 40)
#mods

#skill AnimateArmour
#flags spell minion permanentMinion
	minionHasItemSet = true,
	minionUses = {
		["Weapon 1"] = true,
		["Weapon 2"] = true,
		["Helmet"] = true,
		["Body Armour"] = true,
		["Gloves"] = true,
		["Boots"] = true,
	},
	minionList = {
		"AnimatedArmour",
	},
#mods

#skill AnimateArmourAltX
#flags spell minion permanentMinion
	minionHasItemSet = true,
	minionUses = {
		["Weapon 1"] = true,
		["Weapon 2"] = true,
		["Helmet"] = true,
		["Body Armour"] = true,
		["Gloves"] = true,
		["Boots"] = true,
	},
	minionList = {
		"AnimatedArmour",
	},
#mods

#skill BattlemagesCry
#flags area duration warcry
	statMap = {
		["skill_empowers_next_x_melee_attacks"] = {
			mod("BattlemageExertedAttacks", "BASE", nil),
		},
		["divine_cry_additive_spell_damage_modifiers_apply_to_attack_damage_at_%_value_per_5_power_up_to_150%"] = {
			mod("BattlemageSpellIncreaseApplyToAttackPer5MP", "BASE", nil),
		},
		["divine_cry_critical_strike_chance_+%_per_5_power_up_to_cap%"] = {
			mod("BattlemageCritChancePer5MP", "BASE", nil),
		},
		["display_battlemage_cry_exerted_attacks_trigger_supported_spell"] ={
			-- Display only
		},
	},
#baseMod skill("radius", 60)
#mods

#skill BattlemagesCrySupport
	statMap = {
		["support_divine_cry_damage_+%_final"] = {
			mod("Damage", "MORE", nil),
		},
		["triggered_by_divine_cry"] = {
			skill("triggeredByBattleMageCry", true),
		},
	},
#mods

#skill Berserk
#flags spell
	statMap = {
		["berserk_attack_damage_+%_final"] = {
			mod("Damage", "MORE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }),
		},
		["berserk_attack_speed_+%_final"] = {
			mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }),
		},
		["berserk_movement_speed_+%_final"] = {
			mod("MovementSpeed", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
		},
		["berserk_base_damage_taken_+%_final"] = {
			mod("DamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
		},
	},
#mods

#skill Bladestorm
#flags attack melee area duration
	parts = {
		{
			name = "Attack",
		},
		{
			name = "Bladestorm",
		},
	},
	statMap = {
		["bladestorm_storm_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["bladestorm_attack_speed_+%_final_while_in_bloodstorm"] = {
			mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "Condition", var = "BladestormInBloodstorm" }),
		},
		["bladestorm_movement_speed_+%_while_in_sandstorm"] = {
			mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Sandstorm", effectCond = "BladestormInSandstorm" }),
		},
	},
#baseMod skill("radius", 24)
#baseMod skill("radiusLabel", "Area of initial attack:")
#baseMod skill("radiusSecondary", 20)
#baseMod skill("radiusSecondaryLabel", "Area of bladestorms:")
#baseMod mod("BleedChance", "BASE", 100, ModFlag.Attack, 0, { type = "Condition", var = "BloodStance" }, { type = "SkillPart", skillPart = 2 })
#mods

#skill BladestormAltX
#flags attack melee area duration
	parts = {
		{
			name = "Attack",
		},
		{
			name = "Bladestorm",
		},
	},
	statMap = {
		["bladestorm_storm_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["bladestorm_attack_speed_+%_final_while_in_bloodstorm"] = {
			mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "Condition", var = "BladestormInBloodstorm" }),
		},
		["bladestorm_movement_speed_+%_while_in_sandstorm"] = {
			mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Sandstorm", effectCond = "BladestormInSandstorm" }),
		},
	},
#baseMod skill("radius", 24)
#baseMod skill("radiusLabel", "Area of initial attack:")
#baseMod skill("radiusSecondary", 20)
#baseMod skill("radiusSecondaryLabel", "Area of bladestorms:")
#mods

#skill BloodSandStance
#flags spell
	statMap = {
		["blood_sand_stance_melee_skills_area_of_effect_+%_final_in_blood_stance"] = {
			mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Blood", effectCond = "BloodStance"}, { type = "SkillType", skillType = SkillType.Melee })
		},
		["blood_sand_stance_melee_skills_area_damage_+%_final_in_blood_stance"] = {
			mod("Damage", "MORE", nil, ModFlag.Area, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Blood", effectCond = "BloodStance"}, { type = "SkillType", skillType = SkillType.Melee })
		},
		["blood_sand_stance_melee_skills_area_of_effect_+%_final_in_sand_stance"] = {
			mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Sand", effectCond = "SandStance"}, { type = "SkillType", skillType = SkillType.Melee })
		},
		["blood_sand_stance_melee_skills_area_damage_+%_final_in_sand_stance"] = {
			mod("Damage", "MORE", nil, ModFlag.Area, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Sand", effectCond = "SandStance"}, { type = "SkillType", skillType = SkillType.Melee })
		},
	},
#mods

#skill Boneshatter
#flags attack melee area duration
	parts = {
		{
			name = "Attack",
			area = false,
		},
		{
			name = "Pulse",
			area = true,
		},
	},
	statMap = {
		["trauma_strike_damage_+%_final_per_trauma"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "TraumaStacks" }),
		},
		["boneshatter_trauma_base_duration_ms"] = {
			mod("TraumaDuration", "BASE", nil),
			div = 1000,
		},
		["quality_display_boneshatter_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 14, { type = "SkillPart", skillPart = 2 })
#baseMod flag("HasTrauma")
#mods

#skill BoneshatterAltX
#flags attack melee area duration
	parts = {
		{
			name = "Attack",
			area = false,
		},
		{
			name = "Pulse",
			area = true,
		},
	},
	statMap = {
		["trauma_strike_damage_+%_final_per_trauma"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "TraumaStacks", limitVar = "TraumaStacksMax" }),
		},
		["boneshatter_trauma_base_duration_ms"] = {
			mod("TraumaDuration", "BASE", nil),
			div = 1000,
		},
		["lose_all_trauma_at_X_trauma"] = {
			mod("Multiplier:TraumaStacksMax", "BASE", nil),
		},
		["quality_display_boneshatter_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 14, { type = "SkillPart", skillPart = 2 })
#baseMod flag("HasTrauma")
#mods

#skill BoneshatterAltY
#flags attack melee area
	parts = {
		{
			name = "Attack",
			area = false,
		},
		{
			name = "Pulse",
			area = true,
		},
	},
#baseMod skill("radius", 14, { type = "SkillPart", skillPart = 2 })
#mods

#skill ChainStrike
#flags attack melee area
	statMap = {
		["chain_strike_gain_x_rage_if_attack_hits"] = {
			flag("Condition:CanGainRage", { type = "GlobalEffect", effectType = "Buff" }),
		},
		["chain_strike_cone_radius_+_per_x_rage"] = {
			mod("AreaOfEffect", "BASE", nil, 0, 0, { type = "Multiplier", var = "Rage", div = 5 }),
			div = 5,
		},
		["quality_display_chain_hook_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 24)
#mods

#skill Cleave
#flags attack melee area
	statMap = {
		["cleave_+1_base_radius_per_nearby_enemy_up_to_10"] = {
			skill("radiusExtra", nil, { type = "Multiplier", var = "NearbyEnemies", limit = 10, limitTotal = true })
		},
	},
#baseMod skill("radius", 20)
#mods

#skill CleaveAltX
#flags attack melee area
	statMap = {
		["chain_strike_gain_x_rage_if_attack_hits"] = {
			flag("Condition:CanGainRage", { type = "GlobalEffect", effectType = "Buff" }),
		},
		["chain_strike_cone_radius_+_per_x_rage"] = {
			mod("AreaOfEffect", "BASE", nil, 0, 0, { type = "Multiplier", var = "Rage", div = 5 }),
			div = 5,
		},
		["quality_display_chain_hook_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 20)
#mods

#skill VaalCleave
#flags attack area duration melee
	statMap = {
		["cleave_+1_base_radius_per_nearby_enemy_up_to_10"] = {
			skill("radiusExtra", nil, { type = "Multiplier", var = "NearbyEnemies", limit = 10, limitTotal = true })
		},
		["vaal_cleave_executioner_damage_against_enemies_on_low_life_+%"] = {
			mod("Damage", "MORE", nil, 0, bit.bor(KeywordFlag.Hit, KeywordFlag.Ailment), { type = "ActorCondition", actor = "enemy", var = "LowLife" }, { type = "SkillName", skillName = "Cleave", includeTransfigured = true }, { type = "GlobalEffect", effectType = "Buff", effectName = "Vaal Cleave", unscalable = true } ),
		},
		["vaal_cleave_executioner_area_of_effect_+%"] = {
			mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "SkillName", skillName = "Cleave", includeTransfigured = true }, { type = "GlobalEffect", effectType = "Buff", effectName = "Vaal Cleave", unscalable = true } ),
		},
	},
#baseMod mod("CullPercent", "MAX", 10, 0, 0, { type = "SkillName", skillName = "Cleave", includeTransfigured = true }, { type = "GlobalEffect", effectType = "Buff", effectName = "Vaal Cleave", unscalable = true } )
#mods

#skill ConsecratedPath
#flags attack melee area duration
	statMap = {
		["groundslam_damage_to_close_targets_+%_final"] = {
			mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "Condition", var = "AtCloseRange" })
		},
		["quality_display_groundslam_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 23)
#mods

#skill ConsecratedPathAltX
#flags attack melee area duration
	statMap = {
		["groundslam_damage_to_close_targets_+%_final"] = {
			mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "Condition", var = "AtCloseRange" })
		},
		["quality_display_groundslam_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 23)
#mods

#skill CorruptingFever
#flags spell duration
#baseMod skill("debuff", true)
#baseMod flag("dotIsCorruptingBlood")
#baseMod mod("Multiplier:CorruptingFeverMaxStages", "BASE", 10)
#baseMod mod("Damage", "MORE", 100, ModFlag.Dot, 0, { type = "Multiplier", var = "CorruptingFeverStageAfterFirst"})
#mods

#skill DecoyTotem
#flags spell totem area duration
#baseMod skill("radius", 60)
#mods

#skill DefianceBanner
#flags spell area duration aura banner
	statMap = {
		["evasion_and_physical_damage_reduction_rating_+%"] = {
			mod("ArmourAndEvasion", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["armour_evasion_banner_critical_strike_chance_+%"] = {
			mod("EnemyCritChance", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
	},
#baseMod skill("radius", 46)
#baseMod skill("manaReservationPercent", 0, { type = "Condition", var = "BannerPlanted" })
#baseMod flag("Condition:AffectedByPlacedBanner", { type = "Condition", var = "BannerPlanted" }, { type = "GlobalEffect", effectType = "Buff" })
#mods

#skill Determination
#flags spell aura area
	statMap = {
		["determination_aura_armour_+%_final"] = {
			mod("Armour", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["base_physical_damage_reduction_rating"] = {
			mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
	},
#baseMod skill("radius", 40)
#mods

#skill DevouringTotem
#flags spell totem duration
	statMap = {
		["corpse_consumption_life_to_gain"] = {
			skill("lifeLeechPerUse", nil),
		},
		["corpse_consumption_mana_to_gain"] = {
			skill("manaLeechPerUse", nil),
		},
	},
#mods

#skill DominatingBlow
#flags attack melee duration minion
	minionList = {
		"AxisEliteSoldierDominatingBlow",
		"AxisEliteSoldierDominatingBlowVaal",
	},
#mods

#skill DominatingBlowAltX
#flags attack melee duration minion
	minionList = {
		"AxisEliteSoldierDominatingBlow",
		"AxisEliteSoldierDominatingBlowVaal",
	},
#mods

#skill VaalDomination
#flags attack melee duration minion
	statMap = {
		["vaal_upgrade_minion_damage_+%_final"] = {
		-- Stat is handled directly on minion
		},
		["vaal_upgrade_minion_damage_taken_+%_final"] = {
		-- Stat is handled directly on minion
		},
	},
#mods

#skill PuresteelBanner
#flags spell
	statMap = {
		["puresteel_banner_accuracy_rating_+%_final"] = {
			mod("Accuracy", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff" }),
		},
		["attacks_impale_on_hit_%_chance"] = {
			mod("ImpaleChance", "BASE", nil, 0, KeywordFlag.Attack, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["impale_debuff_effect_+%"] = {
			mod("ImpaleEffect", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
	},
#baseMod skill("radius", 46)
#baseMod skill("manaReservationPercent", 0, { type = "Condition", var = "BannerPlanted" })
#baseMod flag("Condition:AffectedByPlacedBanner", { type = "Condition", var = "BannerPlanted" }, { type = "GlobalEffect", effectType = "Buff" })
#mods

#skill Earthquake
#flags attack melee area duration
	preDamageFunc = function(activeSkill, output)
		local duration = math.floor(activeSkill.skillData.duration * output.DurationMod * 10)
		activeSkill.skillModList:NewMod("Damage", "INC", activeSkill.skillModList:Sum("INC", activeSkill.skillCfg, "EarthquakeDurationIncDamage") * duration, "Skill:Earthquake")
	end,
	parts = {
		{
			name = "Initial impact",
		},
		{
			name = "Aftershock",
		},
	},
	statMap = {
		["quake_slam_fully_charged_explosion_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, bit.bor(KeywordFlag.Hit, KeywordFlag.Ailment), { type = "SkillPart", skillPart = 2 }),
		},
		["quality_display_earthquake_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("showAverage", true, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radius", 18, { type = "SkillPart", skillPart = 1 })
#baseMod skill("radius", 28, { type = "SkillPart", skillPart = 2 })
#mods

#skill EarthquakeAltX
#flags attack melee area duration
	parts = {
		{
			name = "Initial impact",
		},
		{
			name = "Aftershock",
		},
	},
	statMap = {
		["earthquake_skill_aftershock_hit_damage_+%_final_per_100ms_duration"] = {
			mod("Damage", "MORE", nil, 0, KeywordFlag.Hit, { type = "SkillPart", skillPart = 2 }, { type = "Multiplier", var = "100msEarthquakeDuration"} ),
		},
		["earthquake_skill_aftershock_ailment_damage_+%_final_per_100ms_duration"] = {
			mod("Damage", "MORE", nil, 0, KeywordFlag.Ailment, { type = "SkillPart", skillPart = 2 }, { type = "Multiplier", var = "100msEarthquakeDuration"} ),
		},
		["earthquake_skill_aftershock_area_of_effect_+%_final_per_100ms_duration"] = {
			mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }, { type = "Multiplier", var = "100msEarthquakeDuration"} ),
		},
	},
#baseMod skill("showAverage", true, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radius", 18, { type = "SkillPart", skillPart = 1 })
#baseMod skill("radius", 28, { type = "SkillPart", skillPart = 2 })
#mods

#skill VaalEarthquake
#flags attack melee area duration
	parts = {
		{
			name = "Initial impact",
		},
		{
			name = "Aftershock",
		},
	},
	statMap = {
		["quake_slam_fully_charged_explosion_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, bit.bor(KeywordFlag.Hit, KeywordFlag.Ailment), { type = "SkillPart", skillPart = 2 }),
		},
		["quality_display_earthquake_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("showAverage", true, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radius", 18, { type = "SkillPart", skillPart = 1 })
#baseMod skill("radius", 28, { type = "SkillPart", skillPart = 2 })
#mods

#skill SpikeSlam
#flags attack melee area duration
	parts = {
		{
			name = "Initial impact",
		},
		{
			name = "Spike",
		},
	},
	statMap = {
		["spike_slam_explosion_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["active_skill_area_of_effect_+%_final"] = {
			mod("AreaOfEffect", "MORE", nil),
		},
		["spike_slam_spike_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["quality_display_earthshatter_spike_damage_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 18, { type = "SkillPart", skillPart = 1 })
#mods

#skill SpikeSlamAltX
#flags attack melee area duration
	parts = {
		{
			name = "Initial impact",
		},
		{
			name = "Spike",
		},
	},
	statMap = {
		["spike_slam_explosion_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["spike_slam_spike_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["quality_display_earthshatter_spike_damage_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 18, { type = "SkillPart", skillPart = 1 })
#mods

#skill SpikeSlamAltY
#flags attack melee area duration
	parts = {
		{
			name = "Initial impact",
		},
		{
			name = "Spike",
		},
	},
	statMap = {
		["spike_slam_explosion_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["earthshatter_spike_area_of_effect_+%_final"] = {
			mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["quality_display_earthshatter_spike_damage_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 18, { type = "SkillPart", skillPart = 1 })
#mods

#skill EnduringCry
#flags warcry area duration
	statMap = {
		["regenerate_x_life_over_1_second_on_skill_use_or_trigger"] = {
			mod("EnduringCryLifeRegen", "BASE", nil),
		},
		["resist_all_elements_%_per_endurance_charge"] = {
			mod("EnduringCryElementalResist", "BASE", nil),
		},
		["physical_damage_reduction_%_per_endurance_charge"] = {
			mod("EnduringCryPhysicalDamageReduction", "BASE", nil),
		},
	},
#baseMod skill("radius", 60)
#mods

#skill Exsanguinate
#flags spell duration chaining
	statMap = {
		["base_physical_damage_to_deal_per_minute"] = {
			skill("PhysicalDot", nil, { type = "Condition", var = "ExsanguinateDebuffIsFireDamage", neg = true }),
			skill("FireDot", nil, { type = "Condition", var = "ExsanguinateDebuffIsFireDamage"}),
			div = 60,
		},
	},
#baseMod skill("debuff", true)
#baseMod mod("Multiplier:ExsanguinateMaxStages", "BASE", 3)
#baseMod mod("PhysicalDamage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "ExsanguinateStageAfterFirst"}, { type = "Condition", var = "ExsanguinateDebuffIsFireDamage", neg = true })
#baseMod mod("FireDamage", "MORE", 100, bit.bor(ModFlag.Spell,ModFlag.Dot), 0, { type = "Multiplier", var = "ExsanguinateStageAfterFirst"}, { type = "Condition", var = "ExsanguinateDebuffIsFireDamage" })
#mods

#skill ExsanguinateAltX
#flags spell duration chaining
	statMap = {
		["base_physical_damage_to_deal_per_minute"] = {
			skill("PhysicalDot", nil, { type = "Condition", var = "ExsanguinateDebuffIsFireDamage", neg = true }),
			skill("FireDot", nil, { type = "Condition", var = "ExsanguinateDebuffIsFireDamage"}),
			div = 60,
		},
	},
#baseMod skill("debuff", true)
#baseMod mod("Multiplier:ExsanguinateofTransmissionMaxStages", "BASE", 3)
#baseMod mod("PhysicalDamage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "ExsanguinateofTransmissionStageAfterFirst"}, { type = "Condition", var = "ExsanguinateDebuffIsFireDamage", neg = true })
#baseMod mod("FireDamage", "MORE", 100, bit.bor(ModFlag.Spell,ModFlag.Dot), 0, { type = "Multiplier", var = "ExsanguinateofTransmissionStageAfterFirst"}, { type = "Condition", var = "ExsanguinateDebuffIsFireDamage" })
#mods

#skill FlameLink
#flags spell duration
	statMap = {
		["flame_link_minimum_fire_damage"] = {
			mod("FireMin", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Link" }),
		},
		["flame_link_maximum_fire_damage"] = {
			mod("FireMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Link" }),
		},
		["flame_link_added_fire_damage_from_life_%"] = {
			mod("FireMin", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Link" }, { type = "PercentStat", stat = "Life", percent = 1, actor = "parent" }),
			mod("FireMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Link" }, { type = "PercentStat", stat = "Life", percent = 1, actor = "parent" }),
		},
	},
#mods

#skill BloodSandArmour
#flags spell area aura
	statMap = {
		["support_maimed_enemies_physical_damage_taken_+%"] = {
			mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff", effectName = "Maim", effectCond = "BloodStance" }, { type = "Condition", var = "Maimed" }),
		},
	},
#baseMod skill("radius", 28)
#baseMod mod("Condition:Maimed", "FLAG", true, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff", effectName = "Flesh", effectCond = "BloodStance" })
#baseMod mod("Condition:Blinded", "FLAG", true, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff", effectName = "Stone", effectCond = "SandStance" })
#mods

#skill FrozenLegion
#flags spell
#mods

#skill FrozenLegionAltX
#flags spell
#mods

#skill FrozenSweep
#flags attack area melee
	parts = {
		{
			name = "1 charge",
		},
		{
			name = "Wait for max charges",
		},
	},
	preDamageFunc = function(activeSkill, output, breakdown)
		local parentSkill
		local m_ceil = math.ceil
		local m_max = math.max
		activeSkill.skillData.showAverage = false
		activeSkill.skillFlags.showAverage = false
		activeSkill.skillFlags.notAverage = true	
		
		for _, skill in ipairs(activeSkill.actor.activeSkillList) do
			if skill.activeEffect.grantedEffect.name == "Frozen Legion" and activeSkill.actor.mainSkill.socketGroup.slot == activeSkill.socketGroup.slot then
				parentSkill = skill
				break
			end
		end

		if parentSkill.skillModList:Flag(parentSkill.skillCfg, "DisableSkill") and not parentSkill.skillModList:Flag(parentSkill.skillCfg, "EnableSkill") then
			return
		end

		activeSkill.skillData.cooldown = parentSkill.skillData.cooldown
		local cooldownOverride = parentSkill.skillModList:Override(parentSkill.skillCfg, "CooldownRecovery")
		local cooldown = cooldownOverride or (parentSkill.skillData.cooldown + parentSkill.skillModList:Sum("BASE", parentSkill.skillCfg, "CooldownRecovery")) / m_max(0, calcLib.mod(parentSkill.skillModList, parentSkill.skillCfg, "CooldownRecovery"))
		output.Cooldown = m_ceil(cooldown * data.misc.ServerTickRate) / data.misc.ServerTickRate
		activeSkill.skillData.hitTimeOverride = output.Cooldown

		local maxStatues = parentSkill.skillData.storedUses + parentSkill.skillModList:Sum("BASE", parentSkill.skillCfg, "AdditionalCooldownUses")
		local statuesWaitedFor

		if activeSkill.skillPart == 1 then
			statuesWaitedFor = 1
		elseif activeSkill.skillPart == 2 then
			statuesWaitedFor = maxStatues
		end
		activeSkill.skillData.averageBurstHits = statuesWaitedFor
	end,
#baseMod skill("radius", 25)
#mods

#skill FrozenSweepAltX
#flags attack area melee
	parts = {
		{
			name = "1 charge",
		},
		{
			name = "Wait for max charges",
		},
	},
	preDamageFunc = function(activeSkill, output, breakdown)
		local parentSkill
		local m_ceil = math.ceil
		local m_max = math.max
		activeSkill.skillData.showAverage = false
		activeSkill.skillFlags.showAverage = false
		activeSkill.skillFlags.notAverage = true

		for _, skill in ipairs(activeSkill.actor.activeSkillList) do
			if skill.activeEffect.grantedEffect.name == "Frozen Legion of Rallying" and activeSkill.actor.mainSkill.socketGroup.slot == activeSkill.socketGroup.slot then
				parentSkill = skill
				break
			end
		end

		if parentSkill.skillModList:Flag(parentSkill.skillCfg, "DisableSkill") and not parentSkill.skillModList:Flag(parentSkill.skillCfg, "EnableSkill") then
			return
		end

		activeSkill.skillData.cooldown = parentSkill.skillData.cooldown
		local cooldownOverride = parentSkill.skillModList:Override(parentSkill.skillCfg, "CooldownRecovery")
		local cooldown = cooldownOverride or (parentSkill.skillData.cooldown + parentSkill.skillModList:Sum("BASE", parentSkill.skillCfg, "CooldownRecovery")) / m_max(0, calcLib.mod(parentSkill.skillModList, parentSkill.skillCfg, "CooldownRecovery"))
		output.Cooldown = m_ceil(cooldown * data.misc.ServerTickRate) / data.misc.ServerTickRate
		activeSkill.skillData.hitTimeOverride = output.Cooldown

		local maxStatues = parentSkill.skillData.storedUses + parentSkill.skillModList:Sum("BASE", parentSkill.skillCfg, "AdditionalCooldownUses")
		local statuesWaitedFor

		if activeSkill.skillPart == 1 then
			statuesWaitedFor = 1
		elseif activeSkill.skillPart == 2 then
			statuesWaitedFor = maxStatues
		end
		activeSkill.skillData.averageBurstHits = statuesWaitedFor
	end,
#baseMod skill("radius", 25)
#mods

#skill GeneralsCry
#flags warcry area duration
	statMap = {
		["spiritual_cry_doubles_summoned_per_5_MP"] = {
		},
		["maximum_number_of_spiritual_cry_warriors"] = {
			mod("GeneralsCryDoubleMaxCount", "BASE", nil),
		},
		["quality_display_generals_cry_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 60)
#mods

#skill GeneralsCrySupport
	addFlags = {
		forceMainHand = true,
	},
	statMap = {
		["support_spiritual_cry_damage_+%_final"] = {
			mod("Damage", "MORE", nil),
		},
		["number_of_warcries_exerting_this_action"] = {
		},
	},
#mods

#skill GlacialHammer
#flags attack melee
	statMap = {
		["glacial_hammer_third_hit_freeze_as_though_dealt_damage_+%"] = {
			mod("FreezeAsThoughDealing", "MORE", nil)
		},
	},
#mods

#skill GlacialHammerAltX
#flags attack melee
#mods

#skill VaalGlacialHammer
#flags attack melee area duration
#baseMod skill("radius", 20)
#mods

#skill GroundSlam
#flags attack melee area
	statMap = {
		["groundslam_damage_to_close_targets_+%_final"] = {
			mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "Condition", var = "AtCloseRange" })
		},
		["quality_display_groundslam_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 35)
#mods

#skill GroundSlamAltX
#flags attack melee area
	statMap = {
		["groundslam_damage_to_close_targets_+%_final"] = {
			mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "Condition", var = "AtCloseRange" })
		},
		["quality_display_groundslam_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 35)
#mods

#skill VaalGroundSlam
#flags attack melee area
	statMap = {
		["groundslam_damage_to_close_targets_+%_final"] = {
			mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "Condition", var = "AtCloseRange" })
		},
		["vaal_skill_exertable"] = {
			-- Display only
		},
		["quality_display_groundslam_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 39)
#mods

#skill HeavyStrike
#flags attack melee
	statMap = {
		["chance_to_deal_double_damage_%"] = {
			mod("DoubleDamageChance", "BASE", nil),
		},
	},
#mods

#skill HeraldOfAsh
#flags spell area
	preDamageFunc = function(activeSkill, output)
		activeSkill.skillData.FireDot = (activeSkill.skillData.hoaOverkill or 0) * (1 + activeSkill.skillData.hoaMoreBurn / 100) * activeSkill.skillData.hoaOverkillPercent
	end,
	statMap = {
		["herald_of_ash_spell_fire_damage_+%_final"] = {
			mod("FireDamage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }),
		},
		["physical_damage_%_to_add_as_fire"] = {
			mod("PhysicalDamageGainAsFire", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" })
		},
		["herald_of_ash_burning_damage_+%_final"] = {
			skill("hoaMoreBurn", nil),
		},
		["herald_of_ash_burning_%_overkill_damage_per_minute"] = {
			skill("hoaOverkillPercent", nil),
			div = 6000,
		},
		["quality_display_herald_of_ash_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 10)
#mods

#skill HeraldOfPurity
#flags spell minion duration
	minionList = {
		"AxisEliteSoldierHeraldOfLight",
	},
	statMap = {
		["base_number_of_champions_of_light_allowed"] = {
			mod("ActiveSentinelOfPurityLimit", "BASE", nil)
		},
		["herald_of_purity_physical_damage_+%_final"] = {
			mod("PhysicalDamage", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
		},
	},
#mods

#skill FlameTotem
#flags spell totem projectile duration
#baseMod skill("radius", 16)
#mods

#skill FlameTotemAltX
#flags spell totem projectile duration
#mods

#skill IceCrash
#flags attack melee area
	parts = {
		{
			name = "First Hit",
		},
		{
			name = "Second Hit",
		},
		{
			name = "Third Hit",
		},
	},
	statMap = {
		["ice_crash_second_hit_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["ice_crash_third_hit_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 3 }),
		},
		["quality_display_ice_crash_is_gem"] = {
			-- Display Only
		},
	},
#baseMod skill("radiusLabel", "First hit:")
#baseMod skill("radiusSecondaryLabel", "Second hit:")
#baseMod skill("radiusTertiaryLabel", "Third hit:")
#mods

#skill IceCrashAltX
#flags attack melee area
#mods

#skill ImmortalCall
#flags spell duration
	statMap = {
		["mortal_call_elemental_damage_taken_+%_final"] = {
			mod("ElementalDamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard" }),
		},
		["mortal_call_physical_damage_taken_+%_final"] = {
			mod("PhysicalDamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard" }),
		},
		["mortal_call_physical_damage_taken_per_endurance_charge_consumed_final_permyriad"] = {
			mod("PhysicalDamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard" }, { type = "Multiplier", var = "RemovableEnduranceCharge", limit = 5 }),
			div = 100,
		},
		["quality_display_immortal_call_is_gem"] = {
			-- Display Only
		},
	},
#mods

#skill VaalImmortalCall
#flags spell duration
#baseMod flag("Condition:CannotDie", { type = "GlobalEffect", effectType = "Guard" })
#mods

#skill AbyssalCry
#flags warcry area duration
	statMap = {
		["skill_empowers_next_x_melee_attacks"] = {
			mod("InfernalExertedAttacks", "BASE", nil),
		},
		["infernal_cry_covered_in_ash_fire_damage_taken_%_per_5_monster_power"] = {
			mod("InfernalFireTakenPer5MP", "BASE", nil),
		},
		["infernal_cry_empowered_attacks_trigger_combust_display"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 60)
#baseMod skill("radiusLabel", "Warcry area:")
#baseMod skill("radiusSecondary", 22)
#baseMod skill("radiusSecondaryLabel", "Explosion area:")
#mods

#skill InfernalBlow
#flags attack melee duration
	preDamageFunc = function(activeSkill, output)
		local effect = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "DebuffEffect")
		if activeSkill.skillPart == 2 or activeSkill.skillPart == 3 then
			activeSkill.skillModList:NewMod("Damage", "MORE", effect, "Skill:InfernalBlow", 0, { type = "Multiplier", var = "DebuffStack", base = -100 + effect })
		end
		if activeSkill.skillPart == 3 then
			activeSkill.skillData.dpsMultiplier = 1 / 6
		end
	end,
	parts = {
		{
			name = "Melee Hit",
			area = false
		},
		{
			name = "Debuff Explosion - 1 Stack",
			area = true
		},
		{
			name = "Debuff Explosion - 6 Stacks",
			area = true
		},
	},
	statMap = {
		["infernal_blow_explosion_damage_%_of_total_per_stack"] = {
			mod("DebuffEffect", "BASE", nil)
		},
		["quality_display_infernal_blow_is_gem"] = {
			-- Display Only
		},
		["active_skill_base_area_of_effect_radius"] = {
			skill("radius", nil, { type = "SkillPart", skillPart = 1 }),
		},
		["active_skill_base_secondary_area_of_effect_radius"] = {
			skill("radius", nil, { type = "SkillPart", skillPartList = { 2, 3 } }),
		},
	},
#baseMod skill("showAverage", true, { type = "SkillPart", skillPart = 2 })
#baseMod mod("Multiplier:DebuffStack", "BASE", 5, 0, 0, { type = "SkillPart", skillPart = 3 })
#baseMod skill("radiusLabel", "Hit area:", { type = "SkillPart", skillPart = 1 })
#baseMod skill("radiusLabel", "Explosion area:", { type = "SkillPart", skillPartList = { 2, 3 } })
#mods

#skill InfernalBlowAltX
#flags attack melee duration
	preDamageFunc = function(activeSkill, output)
		local effect = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "DebuffEffect")
		if activeSkill.skillPart == 2 or activeSkill.skillPart == 3 then
			activeSkill.skillModList:NewMod("Damage", "MORE", effect, "Skill:InfernalBlowAltX", 0, { type = "Multiplier", var = "DebuffStack", base = -100 + effect })
		end
		if activeSkill.skillPart == 3 then
			activeSkill.skillData.dpsMultiplier = 1 / 6
		end
	end,
	parts = {
		{
			name = "Melee Hit",
			area = false
		},
		{
			name = "Debuff Explosion - 1 Stack",
			area = true
		},
		{
			name = "Debuff Explosion - 6 Stacks",
			area = true
		},
	},
	statMap = {
		["infernal_blow_explosion_damage_%_of_total_per_stack"] = {
			mod("DebuffEffect", "BASE", nil)
		},
		["quality_display_infernal_blow_is_gem"] = {
			-- Display Only
		},
	},
#baseMod skill("showAverage", true, { type = "SkillPart", skillPart = 2 })
#baseMod mod("Multiplier:DebuffStack", "BASE", 5, 0, 0, { type = "SkillPart", skillPart = 3 })
#mods

#skill IntimidatingCry
#flags warcry area duration
	statMap = {
		["skill_empowers_next_x_melee_attacks"] = {
			mod("IntimidatingExertedAttacks", "BASE", nil),
		},
		["intimidating_cry_enemy_phys_reduction_%_penalty_vs_hit_per_5_MP"] = {
			mod("IntimidatingPDRPer5MP", "BASE", nil),
		},
		["intimidating_cry_empowerd_attacks_deal_double_damage_display"] = {
		},
	},
#baseMod skill("radius", 60)
#mods

#skill LeapSlam
#flags attack melee area
#mods

#skill LeapSlamAltX
#flags attack melee area
#mods

#skill MoltenShell
#flags hit area duration
	preDamageFunc = function(activeSkill, output)
		local add = (activeSkill.skillData.MoltenShellDamageMitigated or 0) * activeSkill.skillData.moltenShellReflect / 100
		activeSkill.skillData.FireMin = add
		activeSkill.skillData.FireMax = add
	end,
	statMap = {
		["base_physical_damage_reduction_rating"] = {
			mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard" }),
		},
		["molten_shell_damage_absorbed_%"] = {
			mod("GuardAbsorbRate", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard", unscalable = true }),
		},
		["molten_shell_damage_absorb_limit_%_of_armour"] = {
			mod("GuardAbsorbLimit", "BASE", nil, 0, 0, { type = "PerStat", stat = "Armour", limitVar = "GuardAbsorbMax", limitTotal = true }, { type = "GlobalEffect", effectType = "Guard", unscalable = true }),
			div = 100,
		},
		["molten_shell_max_damage_absorbed"] = {
			mod("Multiplier:GuardAbsorbMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard", unscalable = true }),
		},
		["molten_shell_%_of_absorbed_damage_dealt_as_reflected_fire"] = {
			skill("moltenShellReflect", nil),
		},
	},
#baseMod skill("radius", 15)
#mods

#skill VaalMoltenShell
#flags hit area duration
	preDamageFunc = function(activeSkill, output)
		local add = (activeSkill.skillData.VaalMoltenShellDamageMitigated or 0) * activeSkill.skillData.moltenShellReflect / 100
		activeSkill.skillData.FireMin = add
		activeSkill.skillData.FireMax = add
	end,
	statMap = {
		["base_physical_damage_reduction_rating"] = {
			mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard" }),
		},
		["molten_shell_damage_absorbed_%"] = {
			mod("GuardAbsorbRate", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard", unscalable = true }),
		},
		["molten_shell_damage_absorb_limit_%_of_armour"] = {
			mod("GuardAbsorbLimit", "BASE", nil, 0, 0, { type = "PerStat", stat = "Armour", limitVar = "GuardAbsorbMax", limitTotal = true }, { type = "GlobalEffect", effectType = "Guard", unscalable = true }),
			div = 100,
		},
		["molten_shell_max_damage_absorbed"] = {
			mod("Multiplier:GuardAbsorbMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard", unscalable = true }),
		},
		["molten_shell_%_of_absorbed_damage_dealt_as_reflected_fire"] = {
			skill("moltenShellReflect", nil),
		},
	},
#mods

#skill MoltenStrike
#flags attack melee projectile area
	parts = {
		{
			name = "Melee Hit",
			melee = true,
			projectile = false,
			area = false,
		},
		{
			name = "Magma Balls",
			melee = false,
			projectile = true,
			area = true,
		},
	},
	statMap = {
		["active_skill_hit_ailment_damage_with_projectile_+%_final"] = {
			mod("Damage", "MORE", nil, bit.band(ModFlag.Hit, ModFlag.Ailment), 0, { type = "SkillPart", skillPart = 2 })
		},
	},
#baseMod skill("projectileSpeedAppliesToMSAreaOfEffect", true)
#baseMod skill("radius", 9, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusLabel", "Ball area:", { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusSecondary", 2, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusSecondaryLabel", "Chain Minimum Distance:", { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusTertiary", 25, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusTertiaryLabel", "Chain Maximum Distance:", { type = "SkillPart", skillPart = 2 })
#baseMod flag("CannotSplit")
#mods

#skill MoltenStrikeAltX
#flags attack melee projectile area
	parts = {
		{
			name = "Melee Hit",
			melee = true,
			projectile = false,
			area = false,
		},
		{
			name = "Magma Balls",
			melee = false,
			projectile = true,
			area = true,
		},
		{
			name = "Magma Balls (5th attack)",
			melee = false,
			projectile = true,
			area = true,
		},
	},
	statMap = {
		["active_skill_hit_ailment_damage_with_projectile_+%_final"] = {
			mod("Damage", "MORE", nil, bit.band(ModFlag.Hit, ModFlag.Ailment), 0, { type = "SkillPart", skillPartList = { 2, 3 } })
		},
		["molten_strike_every_5th_attack_projectiles_damage_+%_final"] = {
			mod("Damage", "MORE", nil, bit.band(ModFlag.Hit, ModFlag.Ailment), 0, { type = "SkillPart", skillPart = 3 })
		},
		["molten_strike_every_5th_attack_fire_X_additional_projectiles"] = {
			mod("ProjectileCount", "BASE", nil, 0, 0, { type = "SkillPart", skillPart = 3 })
		},
	},
#baseMod skill("projectileSpeedAppliesToMSAreaOfEffect", true)
#baseMod skill("radius", 9, { type = "SkillPart", skillPartList = { 2, 3 } })
#baseMod skill("radiusLabel", "Ball area:", { type = "SkillPart", skillPartList = { 2, 3 } })
#baseMod skill("radiusSecondary", 2, { type = "SkillPart", skillPartList = { 2, 3 } })
#baseMod skill("radiusSecondaryLabel", "Chain Minimum Distance:", { type = "SkillPart", skillPartList = { 2, 3 } })
#baseMod skill("radiusTertiary", 25, { type = "SkillPart", skillPartList = { 2, 3 } })
#baseMod skill("radiusTertiaryLabel", "Chain Maximum Distance:", { type = "SkillPart", skillPartList = { 2, 3 } })
#baseMod flag("CannotSplit")
#mods

#skill VaalMoltenStrike
#flags attack melee projectile area chaining
	parts = {
		{
			name = "Melee Hit",
			melee = true,
			projectile = false,
			area = false,
			chaining = false,
		},
		{
			name = "Magma Balls",
			melee = false,
			projectile = true,
			area = true,
			chaining = true,
		},
	},
	statMap = {
		["active_skill_hit_ailment_damage_with_projectile_+%_final"] = {
			mod("Damage", "MORE", nil, bit.band(ModFlag.Hit, ModFlag.Ailment), 0, { type = "SkillPart", skillPart = 2 })
		},
	},
#baseMod skill("projectileSpeedAppliesToMSAreaOfEffect", true)
#baseMod skill("radius", 9, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusLabel", "Ball area:", { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusSecondary", 2, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusSecondaryLabel", "Chain Minimum Distance:", { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusTertiary", 25, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radiusTertiaryLabel", "Chain Maximum Distance:", { type = "SkillPart", skillPart = 2 })
#baseMod flag("CannotSplit")
#mods

#skill BloodSpears
#flags attack melee area
	preDamageFunc = function(activeSkill, output)
		activeSkill.skillData.dpsMultiplier = math.max(activeSkill.skillData.dpsMultiplier or 1, 1)
	end,
	statMap = {
		["blood_spears_base_number_of_spears"] = {
			mod("Multiplier:PerforateMaxSpikes", "BASE", nil),
		},
		["blood_spears_damage_+%_final_in_blood_stance"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "Condition", var = "BloodStance" }),
		},
		["quality_display_perforate_is_gem"] = {
			-- Display Only
		},
	},
#baseMod skill("dpsMultiplier", 1, { type = "Multiplier", var = "PerforateSpikeOverlap", limitVar = "PerforateMaxSpikes" }, { type = "Condition", var = "BloodStance" })
#baseMod skill("radius", 11, { type = "Condition", var = "SandStance" })
#baseMod skill("radius", 8, { type = "Condition", var = "BloodStance" })
#mods

#skill BloodSpearsAltX
#flags attack melee area
	preDamageFunc = function(activeSkill, output)
		activeSkill.skillData.dpsMultiplier = math.max(activeSkill.skillData.dpsMultiplier or 1, 1)
	end,
	statMap = {
		["blood_spears_base_number_of_spears"] = {
			mod("Multiplier:PerforateofDualityMaxSpikes", "BASE", nil),
		},
		["blood_spears_damage_+%_final_in_blood_stance"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "Condition", var = "BloodStance" }),
		},
		["blood_spears_additional_number_of_spears_if_changed_stance_recently"] = {
			mod("Multiplier:PerforateofDualityMaxSpikes", "BASE", nil, 0, 0, { type = "Condition", var = "ChangedStanceRecently" }),
		},
		["quality_display_perforate_is_gem"] = {
			-- Display Only
		},
	},
#baseMod skill("dpsMultiplier", 1, { type = "Multiplier", var = "PerforateSpikeOverlap", limitVar = "PerforateofDualityMaxSpikes" }, { type = "Condition", var = "BloodStance" })
#baseMod skill("radius", 11, { type = "Condition", var = "SandStance" })
#baseMod skill("radius", 8, { type = "Condition", var = "BloodStance" })
#mods

#skill BloodSpearsAltY
#flags attack melee area
	preDamageFunc = function(activeSkill, output)
		activeSkill.skillData.dpsMultiplier = math.max(activeSkill.skillData.dpsMultiplier or 1, 1)
	end,
	statMap = {
		["blood_spears_base_number_of_spears"] = {
			mod("Multiplier:PerforateofBloodshedMaxSpikes", "BASE", nil),
		},
		["quality_display_perforate_is_gem"] = {
			-- Display Only
		},
	},
#baseMod skill("dpsMultiplier", 1, { type = "Multiplier", var = "PerforateSpikeOverlap", limitVar = "PerforateofBloodshedMaxSpikes" })
#baseMod skill("radius", 11)
#mods

#skill PetrifiedBlood
	statMap = {
		["skill_grants_life_cost_%_mana_cost_while_not_on_low_life"] = {
			mod("ManaCostAsLifeCost", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Petrified Blood", unscalable = true }, { type="Condition", var="LowLife", neg = true }),
		},
		["petrified_blood_%_life_loss_below_half_from_hit_to_prevent"] = {
			mod("LifeLossBelowHalfPrevented", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Petrified Blood" }),
		},
		["petrified_blood_%_prevented_life_loss_to_lose_over_time"] = {
			mod("LifeLossBelowHalfLost", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Petrified Blood" }),
		},
		["cannot_recover_above_low_life_except_flasks"] = {
			-- Display Only, this mod controls multiple lines for some reason
		},
	},
#mods

#skill PhysicalDamageAura
#flags spell aura area
	statMap = {
		["physical_damage_aura_nearby_enemies_physical_damage_taken_+%"] = {
			mod("PhysicalDamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff", modCond = "PrideMinEffect" }),
		},
		["physical_damage_aura_nearby_enemies_physical_damage_taken_+%_max"] = {
			mod("PhysicalDamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff", modCond = "PrideMaxEffect" }),
		},
	},
#baseMod skill("radius", 40)
#mods

#skill ProtectiveLink
#flags spell duration
	statMap = {
		["bulwark_link_grants_recover_X_life_on_block"] = {
			mod("LifeOnBlock", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Link" }),
		},
		["display_bulwark_link_overrides_attack_block_and_maximum_attack_block"] = {
			mod("BlockAttackChanceIsEqualToParent", "FLAG", true, 0, 0, { type = "GlobalEffect", effectType = "Link" }),
			mod("MaximumBlockAttackChanceIsEqualToParent", "FLAG", true, 0, 0, { type = "GlobalEffect", effectType = "Link" }),
		},
	},
#mods

#skill Punishment
#flags spell curse area duration hex
	statMap = {
		["damage_taken_+%_on_low_life"] = {
			mod("DamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }, { type = "Condition", var = "LowLife"}),
		},
	},
#baseMod skill("debuff", true)
#baseMod skill("radius", 22)
#baseMod mod("DebilitateChance", "BASE", 100)
#mods

#skill FireResistAura
#flags spell aura area
	statMap = {
		["base_fire_damage_resistance_%"] = {
			mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["base_maximum_fire_damage_resistance_%"] = {
			mod("FireResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
	},
#baseMod skill("radius", 40)
#mods

#skill FireImpurity
#flags spell aura area duration
	statMap = {
		["hits_ignore_my_fire_resistance"] = {
			flag("SelfIgnoreFireResistance", { type = "GlobalEffect", effectType = "AuraDebuff" })
		},
		["base_maximum_fire_damage_resistance_%"] = {
			mod("FireResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["base_immune_to_ignite"] = {
			flag("IgniteImmune", { type = "GlobalEffect", effectType = "Aura"}),
		},
	},
#mods

#skill RageVortex
#flags attack melee area duration
	parts = {
		{
			name = "Melee",
		},
		{
			name = "Rage Storm",
		},
	},
	statMap = {
		["rage_slash_radius_+_per_amount_of_rage_sacrificed"] = {
			skill("radiusExtra", nil, { type = "Multiplier", var = "RageSacrificed" }),
			div = 2
		},
		["rage_slash_rage_sacrifice_per_radius_bonus"] = {
			-- Display only
		},
		["rage_slash_rage_sacrifice_per_damage_bonus"] = {
			-- Display only
		},
		["rage_slash_damage_+%_final_per_amount_of_rage_sacrificed"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "RageSacrificed" }),
		},
		["rage_slash_vortex_attack_speed_+%_final"] = {
			mod("Speed", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["rage_slash_sacrifice_rage_%"] = {
			mod("Multiplier:MaxRageVortexSacrificePercentage", "BASE", nil),
		},
		["quality_display_rage_vortex_is_gem"] = {
			-- Display only
		},
	},
#mods

#skill RageVortexAltX
#flags attack melee area duration
	parts = {
		{
			name = "Melee",
		},
		{
			name = "Rage Storm",
		},
	},
	statMap = {
		["rage_slash_vortex_attack_speed_+%_final"] = {
			mod("Speed", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
	},
#mods

#skill RallyingCry
#flags warcry area duration
	statMap = {
		["rallying_cry_damage_+%_final_from_osm_per_nearby_ally"] = {
			mod("RallyingCryExertDamageBonus", "BASE", nil),
		},
		["skill_empowers_next_x_melee_attacks"] = {
			mod("RallyingExertedAttacks", "BASE", nil),
		},
		["rallying_cry_weapon_damage_%_for_allies_per_5_monster_power"] = {
			mod("RallyingCryAllyDamageBonusPer5Power", "BASE", nil),
			mod("Dummy", "DUMMY", 1, 0, 0, { type = "Multiplier", var = "NearbyAlly" }),
		},
		["rallying_cry_buff_effect_on_minions_+%_final"] = {
			mod("RallyingCryMinionDamageBonusMultiplier", "BASE", nil),
			div = 100
		},
	},
#baseMod skill("buffAllies", true)
#baseMod skill("buffNotPlayer", true)
#baseMod skill("radius", 60)
#mods

#skill Reckoning
#flags attack area melee
#baseMod skill("radius", 35)
#mods

#skill RejuvenationTotem
#flags spell aura totem area duration
	statMap = {
		["base_life_regeneration_rate_per_minute"] = {
			mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
			div = 60,
		},
	},
#baseMod skill("radius", 40)
#mods

#skill VaalRejuvenationTotem
#flags spell aura totem area duration
	statMap = {
		["base_life_regeneration_rate_per_minute"] = {
			mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
			div = 60,
		},
		["vaal_rejuvenation_totem_%_damage_taken_applied_to_totem_instead"] = {
			mod("takenFromVaalRejuvenationTotemsBeforeYou", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
	},
#baseMod skill("radius", 40)
#mods

#skill SearingBond
#flags spell totem duration
#mods

#skill SeismicCry
#flags warcry area duration
	statMap = {
		["skill_empowers_next_x_melee_attacks"] = {
			mod("SeismicExertedAttacks", "BASE", nil),
		},
		["seismic_cry_slam_skill_area_+%_increase_per_repeat"] = {
			mod("SeismicAoEMultiplier", "BASE", nil),
		},
		["seismic_cry_base_slam_skill_area_+%"] = {
		},
		["seismic_cry_+%_enemy_stun_threshold_per_5_MP"] = {
			mod("SeismicStunThresholdPer5MP", "BASE", nil),
		},
	},
#baseMod skill("radius", 60)
#mods

#skill NewShieldCharge
#flags attack melee area shieldAttack
#baseMod skill("radius", 28)
#baseMod skill("radiusLabel", "End Cone area:")
#baseMod skill("radiusSecondary", 16)
#baseMod skill("radiusSecondaryLabel", "End Circle area:")
#baseMod skill("radiusTertiary", 8)
#baseMod skill("radiusTertiaryLabel", "Charging area:")
#mods

#skill ShieldCrush
#flags attack melee area shieldAttack
	parts = {
		{
			name = "1 Wave",
		},
		{
			name = "2 Overlapping Waves",
		},
	},
	statMap = {
		["shield_crush_damage_+%_final_from_distance"] = {
			mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "MeleeProximity", ramp = {1,0} }),
		},
	},
#baseMod skill("radius", 29)
#baseMod skill("dpsMultiplier", 2, { type = "SkillPart", skillPart = 2 })
#mods

#skill ShieldCrushAltX
#flags attack melee area shieldAttack
	parts = {
		{
			name = "1 Wave",
		},
		{
			name = "2 Overlapping Waves",
		},
	},
	statMap = {
		["shield_crush_damage_+%_final_from_distance"] = {
			mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "MeleeProximity", ramp = {1,0} }),
		},
	},
#baseMod skill("radius", 29)
#baseMod skill("dpsMultiplier", 2, { type = "SkillPart", skillPart = 2 })
#mods

#skill ShockwaveTotem
#flags spell totem area duration
#mods

#skill Smite
#flags attack melee duration area
	parts = {
		{
			name = "Melee Hit",
			area = false,
		},
		{
			name = "Area Hit",
			area = true,
			melee = false,
		},
	},
	statMap = {
		["base_chance_to_shock_%_from_skill"] = {
			mod("EnemyShockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }, { type = "Condition", neg = true, var = "AffectedByVaalSmite" }),
		},
		["minimum_added_lightning_damage_from_skill"] = {
			mod("LightningMin", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }, { type = "Condition", neg = true, var = "AffectedByVaalSmite" }),
		},
		["maximum_added_lightning_damage_from_skill"] = {
			mod("LightningMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }, { type = "Condition", neg = true, var = "AffectedByVaalSmite" }),
		},
		["quality_display_active_skill_area_damage_quality_negated_from_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radiusLabel", "Lightning Strike area:")
#baseMod skill("radiusSecondaryLabel", "Aura area:")
#mods

#skill SmiteAltX
#flags attack melee area
	parts = {
		{
			name = "Melee Hit",
			area = false,
		},
		{
			name = "Area Hit",
			area = true,
			melee = false,
		},
	},
#mods

#skill VaalSmite
#flags attack melee duration area
	parts = {
		{
			name = "Melee Hit",
			area = false,
		},
		{
			name = "Area Hit",
			area = true,
			melee = false,
		},
	},
	statMap = {
		["base_chance_to_shock_%_from_skill"] = {
			mod("EnemyShockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["minimum_added_lightning_damage_from_skill"] = {
			mod("LightningMin", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
		["maximum_added_lightning_damage_from_skill"] = {
			mod("LightningMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
		},
	},
#baseMod skill("radiusLabel", "Lightning Strike area:")
#baseMod skill("radiusSecondaryLabel", "Aura area:")
#mods

#skill StaticStrike
#flags attack melee duration
	preDamageFunc = function(activeSkill, output)
		if activeSkill.skillPart == 2 then
			activeSkill.skillData.hitTimeOverride = activeSkill.skillData.repeatFrequency / (1 + activeSkill.skillModList:Sum("INC", activeSkill.skillCfg, "StaticStrikeFrequency") / 100)
		end
	end,
	parts = {
		{
			name = "Melee hit",
			chaining = false,
		},
		{
			name = "Beams",
			chaining = true,
		}
	},
	statMap = {
		["static_strike_beam_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2}),
		},
		["static_strike_base_zap_frequency_ms"] = {
			skill("repeatFrequency", nil),
			div = 1000,
		},
		["static_strike_zap_speed_+%"] = {
			mod("StaticStrikeFrequency", "INC", nil),
		},
	},
#baseMod skill("radius", 20)
#mods

#skill QuickGuard
#flags spell duration
	statMap = {
		["quick_guard_damage_absorbed_%"] = {
			mod("GuardAbsorbRate", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard", unscalable = true }),
		},
		["quick_guard_damage_absorb_limit"] = {
			mod("GuardAbsorbLimit", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Guard", unscalable = true }),
		},
	},
#baseMod mod("AvoidBleed", "BASE", 100, 0, 0, { type = "GlobalEffect", effectType = "Guard" })
#mods

#skill Bloodreap
#flags spell area duration
	statMap = {
		["blood_scythe_damage_+%_final_per_charge"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "BloodCharge" }),
		},
		["blood_scythe_cost_+%_final_per_charge"] = {
			mod("LifeCost", "MORE", nil, 0, 0, { type = "Multiplier", var = "BloodCharge" }),
		},
		["base_physical_damage_to_deal_per_minute"] = {
			skill("PhysicalDot", nil, { type = "Condition", var = "ReapDebuffIsFireDamage", neg = true }),
			skill("FireDot", nil, { type = "Condition", var = "ReapDebuffIsFireDamage"}),
			div = 60,
		},
		["quality_display_reap_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 25)
#baseMod skill("debuff", true)
#mods

#skill VaalReap
#flags spell area duration
	statMap = {
		["blood_scythe_damage_+%_final_per_charge"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "BloodCharge" }),
		},
		["vaal_reap_additional_maximum_blood_charges"] = {
			mod("BloodChargesMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", unscalable = true }),
		},
		["base_physical_damage_to_deal_per_minute"] = {
			skill("PhysicalDot", nil, { type = "Condition", var = "ReapDebuffIsFireDamage", neg = true }),
			skill("FireDot", nil, { type = "Condition", var = "ReapDebuffIsFireDamage"}),
			div = 60,
		},
	},
#baseMod skill("radius", 23)
#baseMod skill("dotIsArea", true)
#mods

#skill SummonFireGolem
#flags spell minion golem permanentMinion
	minionList = {
		"SummonedFlameGolem",
	},
	statMap = {
		["fire_golem_grants_damage_+%"] = {
			mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
		},
	},
#baseMod skill("allowTotemBuff", true)
#baseMod flag("Condition:HaveFireGolem", { type = "GlobalEffect", effectType = "Buff" })
#mods

#skill SummonFireGolemAltX
#flags spell minion golem permanentMinion
	minionList = {
		"SummonedFlameGolem",
	},
#baseMod skill("allowTotemBuff", true)
#baseMod flag("Condition:HaveFireGolem", { type = "GlobalEffect", effectType = "Buff" })
#mods

#skill SummonFireGolemAltY
#flags spell minion golem permanentMinion
	minionList = {
		"SummonedFlameGolem",
	},
#baseMod skill("allowTotemBuff", true)
#baseMod flag("Condition:HaveFireGolem", { type = "GlobalEffect", effectType = "Buff" })
#mods

#skill SummonRockGolem
#flags spell minion golem permanentMinion
	minionList = {
		"SummonedStoneGolem",
	},
	statMap = {
		["stone_golem_grants_base_life_regeneration_rate_per_minute"] = {
			mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }),
			div = 60,
		},
	},
#baseMod skill("allowTotemBuff", true)
#baseMod flag("Condition:HavePhysicalGolem", { type = "GlobalEffect", effectType = "Buff" })
#mods

#skill SummonRockGolemAltX
#flags spell minion golem permanentMinion
	minionList = {
		"SummonedStoneGolem",
	},
#baseMod skill("allowTotemBuff", true)
#baseMod flag("Condition:HavePhysicalGolem", { type = "GlobalEffect", effectType = "Buff" })
#mods

#skill SummonRockGolemAltY
#flags spell minion golem permanentMinion
	minionList = {
		"SummonedStoneGolem",
	},
#baseMod skill("allowTotemBuff", true)
#baseMod flag("Condition:HavePhysicalGolem", { type = "GlobalEffect", effectType = "Buff" })
#mods

#skill NewSunder
#flags attack melee area
	parts = {
		{
			name = "First Wave Area",
		},
		{
			name = "Final Wave Area",
		},
		{
			name = "Shockwaves",
		},
	},
	statMap = {
		["shockwave_slam_explosion_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 3 }),
		},
		["active_skill_area_of_effect_+%_final"] = {
			mod("AreaOfEffect", "MORE", nil),
		},
		["sunder_wave_radius_+_per_step"] = {
			skill("radiusExtra", nil, { type = "Multiplier", var = "SunderWaveArea" }),
		},
	},
#baseMod skill("radius", 12)
#baseMod mod("Multiplier:SunderWaveArea", "BASE", 4, 0, 0, { type = "SkillPart", skillPart = 2 })
#mods

#skill NewSunderAltX
#flags attack melee area
	parts = {
		{
			name = "Wave",
		},
		{
			name = "Shockwaves",
		},
	},
	statMap = {
		["shockwave_slam_explosion_damage_+%_final"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }),
		},
		["active_skill_area_of_effect_+%_final"] = {
			mod("AreaOfEffect", "MORE", nil),
		},
	},
#baseMod skill("radius", 12)
#mods

#skill Sweep
#flags attack melee area
#baseMod skill("radius", 24)
#mods

#skill EnduranceChargeSlam
#flags attack melee area
#baseMod skill("radius", 15)
#baseMod skill("radiusLabel", "Fissure Length:")
#baseMod skill("radiusSecondary", 7)
#baseMod skill("radiusSecondaryLabel", "Fissure Width:")
#mods

#skill EnduranceChargeSlamAltX
#flags attack melee area
	statMap = {
		["endurance_charge_slam_damage_+%_final_per_endurance_charge_consumed"] = {
			mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "RemovableEnduranceCharge" }),
		},
        ["tectonic_slam_area_of_effect_+%_final_per_endurance_charge_consumed"] = {
			mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "Multiplier", var = "RemovableEnduranceCharge" }),
		},
        ["quality_display_alternate_tectonic_slam_is_gem"] = {
			-- Display only
		},
	},
#baseMod skill("radius", 15)
#baseMod skill("radiusLabel", "Fissure Length:")
#baseMod skill("radiusSecondary", 7)
#baseMod skill("radiusSecondaryLabel", "Fissure Width:")
#mods

#skill Vengeance
#flags attack melee area
#mods

#skill VigilantStrike
#flags attack melee
#mods

#skill Vitality
#flags spell aura area
	statMap = {
		["base_life_regeneration_rate_per_minute"] = {
			mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }),
			div = 60,
		},
	},
#baseMod skill("radius", 40)
#mods

#skill VolcanicFissure
#flags melee attack projectile area slam
	parts = {
		{
			name = "Ground Fissure",
			melee = true,
			projectile = false,
		},
		{
			name = "Magma Balls",
			melee = false,
			projectile = true,
		},
	},
	statMap = {
		["active_skill_hit_ailment_damage_with_projectile_+%_final"] = {
			mod("Damage", "MORE", nil, bit.band(ModFlag.Hit, ModFlag.Ailment), 0, { type = "SkillPart", skillPart = 2 })
		},
	},
#baseMod flag("CannotSplit")
#mods

#skill VolcanicFissureAltX
#flags melee attack area slam
#mods

#skill VaalVolcanicFissure
#flags melee attack projectile area slam
	parts = {
		{
			name = "Ground Fissure",
			melee = true,
			projectile = false,
		},
		{
			name = "Magma Balls",
			melee = false,
			projectile = true,
		},
	},
#baseMod flag("CannotSplit")
#mods

#skill Vulnerability
#flags spell curse area duration hex
	statMap = {
		["receive_bleeding_chance_%_when_hit_by_attack"] = {
			mod("SelfBleedChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }),
		},
		["physical_damage_taken_+%"] = {
			mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }),
		},
		["self_bleed_duration_+%"] = {
			mod("SelfBleedDuration", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }),
		},
	},
#baseMod skill("debuff", true)
#baseMod skill("radius", 22)
#mods

#skill WarlordsMark
#flags spell curse duration mark
	statMap = {
		["enemy_chance_to_double_stun_duration_%_vs_self"] = {
			mod("SelfDoubleStunDurationChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" } ),
		},
		["life_leech_on_any_damage_when_hit_by_attack_permyriad"] = {
			mod("SelfDamageLifeLeech", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }),
		},
		["mana_leech_on_any_damage_when_hit_by_attack_permyriad"] = {
			mod("SelfDamageManaLeech", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }),
		},
		["enemy_rage_regeneration_on_stun"] = {
			flag("Condition:CanGainRage", { type = "GlobalEffect", effectType = "Buff" } ),
		},
	},
#baseMod skill("debuff", true)
#mods

#skill BloodstainedBanner
#flags spell
	statMap = {
		["accuracy_rating_+%"] = {
			mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" })
		},
		["physical_damage_taken_+%"] = {
			mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "AuraDebuff" })
		},
	},
#baseMod skill("radius", 46)
#baseMod skill("manaReservationPercent", 0, { type = "Condition", var = "BannerPlanted" })
#baseMod flag("Condition:AffectedByPlacedBanner", { type = "Condition", var = "BannerPlanted" }, { type = "GlobalEffect", effectType = "Buff" })
#mods